package cn.kgc.tangcco.service.impl;

import cn.kgc.tangcco.pojo.Idiom;
import cn.kgc.tangcco.repository.IdiomRepository;
import cn.kgc.tangcco.service.IdiomService;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.Optional;

/**
 * @author 李昊哲
 * @Description
 * @create 2021/1/27 11:51
 */
@Service
public class IdiomServiceImpl implements IdiomService {
    private final IdiomRepository idiomRepository;

    public IdiomServiceImpl(IdiomRepository idiomRepository) {
        this.idiomRepository = idiomRepository;
    }


    @Override
    public Page<Idiom> findAll(Integer page, Integer size) {
        return idiomRepository.findAll(PageRequest.of(page - 1, size));
    }

    @Override
    public Idiom findById(Integer id) {
        Optional<Idiom> optional = idiomRepository.findById(id);
        if (optional.isEmpty()) {
            return null;
        }
        return optional.get();
    }

    @Transactional
    @Override
    public Idiom save(Idiom idiom) {
        return idiomRepository.saveAndFlush(idiom);
    }

    @Transactional
    @Override
    public Long deleteById(Integer id) {
        long count = idiomRepository.count();
        idiomRepository.deleteById(id);
        return count - idiomRepository.count();
    }

    @Override
    public long count() {
        return idiomRepository.count();
    }
}
